package com.ruoyi.framework.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CustomCORSConfiguration {

    private CorsConfiguration buildConfig(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("Content-Type"); // 允许指定的head头部
        corsConfiguration.addAllowedHeader("Authorization"); // 允许指定的head头部
        corsConfiguration.addAllowedHeader("X-Token"); // 允许指定的head头部
        corsConfiguration.addAllowedOrigin("https://www.chinapostdoctor.org.cn"); // 允许指定域名使用
        corsConfiguration.addAllowedOrigin("https://jj.chinapostdoctor.org.cn"); // 允许指定域名使用
        corsConfiguration.addAllowedMethod("GET"); // 允许指定的请求方法
        corsConfiguration.addAllowedMethod("POST"); // 允许指定的请求方法
        corsConfiguration.addAllowedMethod("PUT"); // 允许指定的请求方法
        corsConfiguration.addAllowedMethod("DELETE"); // 允许指定的请求方法
        corsConfiguration.setMaxAge(3600L); // 设置预检请求的有效期
        corsConfiguration.setAllowCredentials(false);
        return corsConfiguration;
    }

    // 添加CorsFilter拦截器，对任意的请求使用
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}
